import request from '@/config/axios'

/** ERP 产品 bom物料信息 */
export interface ProductBomMaterial {
    id: number; // 产品编号
    parentBarCode?: string; // 父产品商品编码
    name?: string; // 产品名称
    barCode?: string; // 产品商品编码
    categoryId?: number; // 产品分类编号
    unitId?: number; // 单位编号
    standard: string; // 产品规格
    remark: string; // 产品备注
    weight: number; // 基础重量（kg）
    costPrice: number; // 成本价
    unit: number; // 数量
    cost: number; // 费用
    sort: number; // 排序
    property: string; // 商品属性
}

/** ERP 产品 bom工序信息 */
export interface ProductBomProcess {
    id: number; // 产品编号
    sort: number; // 执行顺序
    name: string; // 工序名称
    userId: number; // 负责人员
    type: string; // 计价方式
    price: number; // 工价
    elapsedTime?: number; // 标准耗时（小时）
    remark: string; // 产品备注
    property: string; // 商品属性
}


// ERP 产品 VO
export interface ProductVO {
    id: number // 产品编号
    name: string // 产品名称
    barCode: string // 产品商品编码
    categoryId: number // 产品类型编号
    unitId: number // 单位编号
    unitName?: string // 单位名字
    status: number // 产品状态
    standard: string // 产品规格
    remark: string // 产品备注
    expiryDay: number // 保质期天数
    weight: number // 重量（kg）
    purchasePrice: number // 采购价格，单位：元
    salePrice: number // 销售价格，单位：元
    minPrice: number // 最低价格，单位：元
}

// ERP 产品 API
export const ProductApi = {
    // 查询产品分页
    getProductPage: async (params: any) => {
        return await request.get({url: `/erp/product/page`, params})
    },

    // 查询产品精简列表
    getProductSimpleList: async () => {
        return await request.get({url: `/erp/product/simple-list`})
    },

    // 远程搜索产品
    getProductRemoteSearch: async (params: any) => {
        return await request.get({url: `/erp/product/remote-search`, params})
    },

    // 查询产品详情
    getProduct: async (id: number) => {
        return await request.get({url: `/erp/product/get?id=` + id})
    },

    // 新增产品
    createProduct: async (data: ProductVO) => {
        return await request.post({url: `/erp/product/create`, data})
    },

    // 修改产品
    updateProduct: async (data: ProductVO) => {
        return await request.put({url: `/erp/product/update`, data})
    },

    // 删除产品
    deleteProduct: async (id: number) => {
        return await request.delete({url: `/erp/product/delete?id=` + id})
    },

    // 导出产品 Excel
    exportProduct: async (params) => {
        return await request.download({url: `/erp/product/export-excel`, params})
    },

    // ==================== 子表（ERP 产品 bom物料） ====================

    // 获得ERP 产品 bom物料分页
    getProductBomMaterialPage: async (params) => {
        return await request.get({url: `/erp/product/product-bom-material/page`, params})
    },
    // 新增ERP 产品 bom物料
    createProductBomMaterial: async (data: ProductBomMaterial) => {
        return await request.post({url: `/erp/product/product-bom-material/create`, data})
    },

    // 修改ERP 产品 bom物料
    updateProductBomMaterial: async (data: ProductBomMaterial) => {
        return await request.put({url: `/erp/product/product-bom-material/update`, data})
    },

    // 删除ERP 产品 bom物料
    deleteProductBomMaterial: async (id: number) => {
        return await request.delete({url: `/erp/product/product-bom-material/delete?id=` + id})
    },

    /** 批量删除ERP 产品 bom物料 */
    deleteProductBomMaterialList: async (ids: number[]) => {
        return await request.delete({url: `/erp/product/product-bom-material/delete-list?ids=${ids.join(',')}`})
    },

    // 获得ERP 产品 bom物料
    getProductBomMaterial: async (id: number) => {
        return await request.get({url: `/erp/product/product-bom-material/get?id=` + id})
    },


// ==================== 子表（ERP 产品 bom工序） ====================

    // 获得ERP 产品 bom工序分页
    getProductBomProcessPage: async (params) => {
        return await request.get({url: `/erp/product/product-bom-process/page`, params})
    },
    // 新增ERP 产品 bom工序
    createProductBomProcess: async (data: ProductBomProcess) => {
        return await request.post({url: `/erp/product/product-bom-process/create`, data})
    },

    // 修改ERP 产品 bom工序
    updateProductBomProcess: async (data: ProductBomProcess) => {
        return await request.put({url: `/erp/product/product-bom-process/update`, data})
    },

    // 删除ERP 产品 bom工序
    deleteProductBomProcess: async (id: number) => {
        return await request.delete({url: `/erp/product/product-bom-process/delete?id=` + id})
    },

    /** 批量删除ERP 产品 bom工序 */
    deleteProductBomProcessList: async (ids: number[]) => {
        return await request.delete({url: `/erp/product/product-bom-process/delete-list?ids=${ids.join(',')}`})
    },

    // 获得ERP 产品 bom工序
    getProductBomProcess: async (id: number) => {
        return await request.get({url: `/erp/product/product-bom-process/get?id=` + id})
    }


}
